package ar.edu.utn.frgp.TPFinalBanco.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity(name = "PlazoFijo")
public class PlazoFijo implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "idPzoFijo")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer idPzoFijo;

	@Column(name = "fechaAlta")
	private Date fechaAlta;

	@Column(name = "fechaVto")
	private Date fechaVto;

	@Column(name = "dni")
	private String dni;

	// [EFECTIVO|CUENTA]
	@Enumerated(EnumType.STRING)
	@Column(name = "origen")
	private OrigenDineroEnum origen;

	@Column(name = "nroCtaOrigen", nullable = false)
	private Integer nroCtaOrigen;

	// [CUENTA|CAJA]
	@Enumerated(EnumType.STRING)
	@Column(name = "acreditacion")
	private AcreditacionEnum acreditacion;

	@Column(name = "nroCtaDestino", nullable = false)
	private Integer nroCtaDestino;

	@Column(name = "monto")
	private BigDecimal monto;

	@Column(name = "interes")
	private BigDecimal interes;

	public Integer getIdPzoFijo() {
		return idPzoFijo;
	}

	public void setIdPzoFijo(Integer idPzoFijo) {
		this.idPzoFijo = idPzoFijo;
	}

	public Date getFechaAlta() {
		return fechaAlta;
	}

	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}

	public Date getFechaVto() {
		return fechaVto;
	}

	public void setFechaVto(Date fechaVto) {
		this.fechaVto = fechaVto;
	}

	public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}

	public OrigenDineroEnum getOrigen() {
		return origen;
	}

	public void setOrigen(OrigenDineroEnum origen) {
		this.origen = origen;
	}

	public Integer getNroCtaOrigen() {
		return nroCtaOrigen;
	}

	public void setNroCtaOrigen(Integer nroCtaOrigen) {
		this.nroCtaOrigen = nroCtaOrigen;
	}

	public AcreditacionEnum getAcreditacion() {
		return acreditacion;
	}

	public void setAcreditacion(AcreditacionEnum acreditacion) {
		this.acreditacion = acreditacion;
	}

	public Integer getNroCtaDestino() {
		return nroCtaDestino;
	}

	public void setNroCtaDestino(Integer nroCtaDestino) {
		this.nroCtaDestino = nroCtaDestino;
	}

	public BigDecimal getMonto() {
		return monto;
	}

	public void setMonto(BigDecimal monto) {
		this.monto = monto;
	}

	public BigDecimal getInteres() {
		return interes;
	}

	public void setInteres(BigDecimal interes) {
		this.interes = interes;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((idPzoFijo == null) ? 0 : idPzoFijo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		PlazoFijo other = (PlazoFijo) obj;
		if (idPzoFijo == null) {
			if (other.idPzoFijo != null)
				return false;
		} else if (!idPzoFijo.equals(other.idPzoFijo))
			return false;
		return true;
	}
	
	

}
